Manual & Help © 2004 - 2005 Russell Phillips

ClamWin program code © 2004 - 2005 Alex Cherney

www.clamwin.com


Introduction

ClamWin is a graphical front-end to the ClamAV anti-virus software that runs on Microsoft Windows. An easy to use installer program is provided.

Features include:

  • Scheduler - set up scans to run at a defined time

  • Automatic virus database updates via the Internet

  • Standalone Virus Scanner

  • Context menu integration to Microsoft Windows Explorer - right click on a file to scan it

  • Microsoft Outlook add-in to scan incoming and outgoing e-mails

Please note that ClamWin Antivirus does not include an on-access real-time scanner, that is, you need to manually scan a file in order to detect a virus. The Microsoft Outlook Addin, however, will delete a virus-infected attachment automatically.


Installation Instructions

Download the latest installer. Close all running programs, then double-click on the downloaded file to run it. If you already have a copy of ClamWin installed, you can upgrade it by simply running the installer for a later version, and installing on top of the existing version. In this case, the installer will detect if ClamWin is running. You should stop ClamWin before continuing the installation.

After clicking N ext on the intial screen, the licence terms will be displayed. This program is released under the GNU General Public License. You must agree to the terms of this licence to use this program. The installation program will also install binary files from Cygwin (www.cygwin.com) and Clam Anti-Virus (www.clamav.net), both of which are also distributed under the GNU General Public License.

Next, you will be asked where you would like ClamWin to be installed. The default option is sensible, and you should only change it if you have a particular reason to do so.

Next, you will be asked which parts of the program to install.

Three selections (Cygwin Files, ClamAV Files and ClamWin Files) are greyed out and cannot be de-selected. This is because these files are essential for the program's correct operation. The other options are as follows:

Integration with Windows Explorer: If this option is selected, an extra option is added to Windows Explorer's right-click menu, allowing files to be scanned quickly and easily.

Integration with Microsoft Outlook: If this option is selected, an Outlook add-in will be installed, which will check all incoming and outgoing e-mails for viruses automatically. Note that this option will only appear if Microsoft Outlook (not Outlook Express) is installed.

Download Source Code: If this option is selected, the program's source code will be automatically downloaded from the Internet. The source code is not necessary for a normal installation, but may be of interest or use to programmers.

Next, you will be asked which Start Menu folder ClamWin's icons should be placed in. By default, a new folder named ClamWin Antivirus will be created, and the icons placed in that.

The next screen asks if you would like to download virus database files as soon as the program is installed. It is a good idea to update the virus database files as soon as possible. This screen also gives you the option to have a shortcut icon placed on the desktop.

The last screen displays a summary of the options that have been selected. To install ClamWin with the selected options, click I nstall. To go back and change some options, click < B ack.

If you selected Download Source Code or Download Virus Database Files, this will be done once the program is installed. You will need to be connected to the Internet.


Configuration

To configure ClamWin, either right-click on the system tray icon and select C onfigure ClamWin, or, from the main program window, select P references from the T ools menu. A dialogue with nine tabs will be displayed, as shown below. Clicking OK will close the dialogue box and save any changes made. Clicking Cancel will close the dialogue box without saving any changes.

Preferences Window - General Tab
Each of the tabs is discussed below.

General

This tab has options that control ClamWin's behaviour when scanning, and what ClamWin should do about infected files. The Scanning Options control ClamWin's behaviour when scanning. Any combination of options can be selected. The options are as follows:

S can In Subdirectories: Select this option to have ClamWin scan sub-directories as well as the directory specified.

D isplay Infected Files Only: When ClamWin is running a scan, it displays the names of the files as it scans them. If this option is selected, ClamWin will only display the names of files that have been detected as infected. Selecting this option may slightly increase scanning speed.

Display W arning When Virus is detected: If this option is selected, a warning message will be displayed if ClamWin detects a virus.

The Infected Files options control determine what action ClamWin should take if it detects a virus. Only one option can be selected. The options are:

Report Only: If this option is selected, ClamWin only reports that a virus was found.

Remove (Use Carefully): If this option is selected, ClamWin will permanently delete the infected file. The file will not be placed in Windows' Recycle Bin.

Move To Quarantine Folder: If this option is selected, ClamWin will move the infected file to the designated folder. To change the folder, enter the path in the text box, or click on the ... button to browse to a folder.

If a file with the same name is already present in the quarantine folder, then ClamWin will append a dot followed by a number to the new file, to avoid over-writing the existing file. E.g. if a file named eicar.com is in the quarantine folder, and a virus is found in a file named eicar.com, then the second copy will be moved to the quarantine folder and renamed to eicar.com.000, a third copy would be moved and renamed to eicar.com.001, etc.

Filters

On this tab, ClamWin can be configured to scan only certain types of file, or to ignore certain types of file. The two can be combined to give greater control over what types of file are scanned.

Preferences Window - Filters Tab
Specific files can be filtered by specifying the full path, eg:

C:\Path\to\folder\File.ext

Folders can be filtered by specifying the path, and including a * at the end, eg:

C:\Path\to\folder\*

Regular expressions can be used for greater flexibility, but must be contained within angle brackets (<RegularExpression>). Information about regular expressions, including tutorials, are readily available on the web. Just use your favourite search engine to search for regular expression tutorial.

By default, the following patterns are excluded from virus scans:

*.dbx (used by Microsoft Outlook Express to store e-mails etc.)

*.tbb (used by Ritlabs The Bat! to store e-mails etc)

*.pst (used by Microsoft Outlook to store data)

Internet Updates

On this tab, you can control how ClamWin gets updates to the virus database. If the Enable Automatic Virus Database Updates option is selected, then ClamWin will automatically check for and download database updates. How often it checks and at what time can be set by the user.

If ClamWin is not running (or the computer is switched off) at the time specified, the update will be applied the next time ClamWin is started (which will normally be the next time the computer is switched on). The only exception is if the update frequency is set to "workdays", in which case it won't do anything until Monday

The address of the server to be queried can be set manually. Most users will want to leave this at the default setting (database.clamav.net). However, if you have a local server that mirrors database.clamav.net, you can enter its address instead.

The other option is Update Virus Database On Logon. If this option is selected, ClamWin will check for updates when a user logs on to the PC.

Proxy

If you connect to the Internet via a proxy server, enter the details on this tab. If not, leave the details blank. Most users do not use a proxy server, and so can safely ignore this tab.

Scheduled Scans

This tab allows the user to configure ClamWin to run scans at certain times. Details of scheduled scans are displayed. To add a scan, click the Add button, then set the description, frequency, time, and folder to scan. An existing scheduled scan can be changed by clicking the Edit button, or removed by clicking the Remove button.

Scheduled scans can be activated or deactivated by clicking on the appropriate button. A deactivated scan will not run at the scheduled time.

Email Alerts

To have ClamWin send an e-mail report when a virus is detected, check the Send Email Alert On Virus Detection option. Fill in the details for your SMTP server, and the details for the message (subject, from address, to address).

Note: some SMTP servers do not require a user name & password. If this is the case, leave these settings blank.

To test the settings, click the Send Test Email button.

When this option is selected, ClamWin will send an e-mail report whenever a virus is found. This e-mail will include the name of the computer that the e-mail was sent from, and a copy of the scan log.

Archives

ClamWin can check the files in archive files (such as .zip files) for viruses. This tab allows the user to select whether or not ClamWin should check inside archive files, and set the maximum size of archive files to be checked, the maximum number of files to be extracted, and the maximum number of sub-archives to be extracted.

It should be noted that scanning within archives can slow down a scan, so disabling scanning of archives may reduce the time taken for a scan to complete.

File Locations

This tab allows the locations of the ClamScan program file, FreshClam program file (the program used to retrieve database updates) and the virus database to be altered. These values are set during installation, and should not normally need to be altered. Do not change these settings unless you know what you are doing. If they are incorrectly set, ClamWin will stop working.

Reports

This tab allows the user to change the location & name of the log files. Most users will not need to change these settings.

You can also enable or disable the display of pop-up notification messages on this tab. By default, such messages are enabled. Unchecking the D isplay Pop-up Notification Messages In Taskbar checkbox will prevent status messages appearing when viruses are detected, the virus database is updated, etc.

Advanced

This tab has four settings. The default settings will be fine for most users.

Treat Files As Mailboxes: If selected, ClamWin will parse all files as if they were MIME e-mail messages (e.g. Unix/Linux mailboxes, .eml files saved from Outlook Express). Note that non-MIME files can be scanned with this option selected, but this will slow the scan down.

Extract Attachments and Macros from MS Office Documents: If selected, ClamWin will check for macro viruses in MS Office documents.

Limit Log File Size To: Older logs will be deleted when necessary to keep the log file within the specified size.

Scanner Priority: This can be set to Low, Normal or High, and determines how the CPU cycles are split between ClamWin and other running applications. Setting this to High may make scans quicker, but may have slow down other applications. Conversely, setting this to Low may make scans slower, but should have less impact on other applications.


Usage

There are several ways to use ClamWin:

  • Run from the Start menu

  • Run from the system tray icon

  • Scheduled scans

  • Outlook integration

  • Windows Explorer integration

This section will discuss each method in turn

Run from the Start Menu

By default, during installation, a program group named "ClamWin Antivirus" is created, with one item, "Virus Scanner". Selecting this item will start ClamWin with the main window open, as shown below:

To scan a file or a folder, simply select it in the main window, and click S can. Multiple files/folders can be selected by holding down the Control or Shift key whilst clicking.

Run from the system tray icon

To run ClamWin from the system tray icon, either double-click on the icon or right-click and select Open ClamWin. ClamWin will be started with the main window open, as above.

The system tray icon allows other options to be selected on right-click:

D ownload Virus Database Update: This will cause ClamWin to check for updates to the virus database, and download any updates that are available.

C onfigure ClamWin: This will display ClamWin's preferences dialogue, where ClamWin's settings can be altered.

S cheduler: If the mouse is moved over this option, a sub-menu will be displayed. From this sub-menu, scheduled scans can be configured, already configured scheduled scans can be run, or running scans can be stopped.

Display R eports: If the mouse is moved over this option, a sub-menu will be displayed. From this sub-menu, the virus database update report or scan report can be viewed.

Scheduled Scans

Scheduled scans can be set up in the preferences dialogue. If a scheduled scan is set up, ClamWin will run a scan at the specified time, without interrupting the user. If a virus is found, a balloon notification will appear above the system tray icon (note: the balloon notification feature does not work in Windows 98). The action taken by ClamWin on detecting a virus will be determined by what has been set in the General tab of the preferences dialogue.

Outlook Integration

If Outlook is installed on the computer, and the Integration with Microsoft Outlook option was selected during the installation of ClamWin, then ClamWin will scan all incoming and outgoing e-mails for viruses. This is done entirely automatically, with no user intervention required. If an incoming e-mail has a virus attached, the virus attachment is replaced with a report file.

Windows Explorer Integration

If the Integration with Windows Explorer option was selected during the installation of ClamWin, an extra option (Scan For Viruses With ClamWin) will be added to the Windows Explorer right-click menu. Right-clicking on a file or folder and selecting this option will scan the file or folder for viruses, providing a quick and simple way to scan suspicious files.


Advanced Operation

This section has details for more advanced users.

Modifying ClamWin's Default Configuration

If a copy of clamwin.conf is in the ClamWin executable files directory ("C:\Program Files\ClamWin\bin" on a default installation), then the first time a user runs ClamWin, it will use the contents of this file as the default configuration.

If you are to set up several new user accounts on a computer, or if you have just installed ClamWin on a system with multiple users, it is recommended that you set up a default configuration and copy the clamwin.conf file to this location.

Running a Virus Scan from the Command Line

ClamWin can be run from the command line, from a batch file for instance. For a full list of parameters, navigate to the directory containing the executable files ("C:\Program Files\ClamWin\bin" on a default installation) and run

clamscan.exe --help

The database directory must be specified, using the --database=FILE/DIR parameter. In a default installation, the command to scan the entire C: drive would be:

clamscan.exe --database="C:\Program Files\ClamWin\db" --recursive C:\

Note the use of the --recursive parameter to ensure that sub-directories are scanned.

When run from the command line, a value will be returned, indicating whether or not a virus was detected. If no virus is found, the return value will be 0. If a virus is found, the return value is 1. Any other return value indicates an error.

Updating the Virus Database from the Command Line

ClamWin uses freshclam.exe to update the virus database. As with the clamscan.exe scanning program, this can be run from a command line, batch file, etc. For a full list of parameters, navigate to the directory containing the executable files ("C:\Program Files\ClamWin\bin" on a default installation) and run

freshclam.exe --help

Both the database directory and the configuration file must be specified. ClamWin generates a freshclam configuration file on the fly, so you will have to create your own. The configuration file is a text file. See the ClamAV documentation for full details of what can be included. A simple freshclam configuration file would have the following lines (lines beginning with a # are comments):

# URL of server where database updates are to be downloaded from
# If this option is given multiple times, each will be tried in
# the order given until an update is successfully downloaded

DatabaseMirror database.clamav.net

# Number of times to try each mirror before moving to the next one

MaxAttempts 3

Once a freshclam configuration file has been created, freshclam can be run with a command similar to the one below:

freshclam --datadir="C:\Documents and Settings\All Users\.clamwin\db" --config-file="C:\Program Files\ClamWin\bin\freshclam.conf"

Getting Updates from a Local Server

If you have ClamWin running on several networked computers, you may wish to have a single computer downloading updates from the Internet, with the others getting updates over the local network. This can be done in one of three ways.

The first (and preferred) method requires a web server. This web server should have the main.cvd and daily.cvd files in the web root directory. It should be possible to download the files by pointing a web browser at http://YOURSERVERNAME/main.cvd and http://YOURSERVERNAME/daily.cvd

In ClamWin's Internet Updates configuration tab, enter the web server's IP address or domain name in the Download Site text box. Do not include anything other than the IP address or domain name (eg 192.168.1.1 is correct, http://192.168.1.1/ is wrong). ClamWin will then query the local web server for updates, instead of a remote Internet server.

The second method is to set up a batch file or similar to copy the main.cvd and daily.cvd files from the server to the relevant location on the clients, over-writing the existing copies. Windows' Task Scheduler can be used to run this batch file as often as required. Disable ClamWin's Enable Automatic Virus Database Updates option, so that it does not query the remote Internet server for updates.

The third method is to set the Virus Database Folder in all copies of ClamWin to a shared folder (eg \\SERVER-NAME\SHARED-DRIVE\db). Note that, in this case, only one copy of ClamWin (preferably the copy on the server) should be set up to get automatic updates.

Manually Updating the Virus Database

To update the virus database manually, download the virus database files main.cvd and daily.cvd and copy them to ClamWin's virus database folder, over-writing the existing files. The virus database files can be downloaded from ClamAV's home page at www.clamav.net


FAQ: Frequently Asked Questions

Q: Why does the following message appear in update reports, even when ClamWin is regularly updated?:

Your ClamAV installation is OUTDATED - please update immediately!

Solution: ClamWin uses ClamAV as its scanning engine. This message will appear if a new version of ClamAV has been released with important extra functionality. Upgrading ClamWin will prevent this message appearing again.

ClamWin's automatic updates do not currently upgrade the software itself - they just update the virus database. The automatic software update in ClamWin is being developed.

Q: Can I use ClamWin without installing it?

A: You can create a copy of ClamWin on a CD or USB flash drive to use on a PC that does not have ClamWin installed. There is a tutorial explaining how to do this at http://www.phillipsuk.org/howto/ClamWin-CDUSB.html

Q: Is a localised version available? Can I translate ClamWin into my language?

A: At the moment, ClamWin is only available in English. Translating ClamWin would be difficult. However, this will change in the future (probably around version 1.0) and features will be added to make it easier to produce localised versions of ClamWin.

However, translated versions of the FAQ are available in the Documents section of the ClamWin SourceForge.net project web site.

If you would like to translate the ClamWin manual and/or FAQ into your language, please contact Russ Phillips at avantman42@users.sourceforge.net

Q: Can I upgrade an existing version of ClamWin?

A: Yes, just run the normal set up program, and install over the top of the existing version.

Q: Why doesn't the "Integration with Microsoft Outlook" option appear during installation?

A: This option only appears if Microsoft Outlook is installed on the computer. Note that Outlook (which is part of the Microsoft Office suite) and Outlook Express (which comes as part of Windows) are two very different programs (despite the similarity in names). ClamWin does not integrate with Outlook Express.

Q: Can ClamWin be configured to check files as they are opened/executed (commonly known as "on-access scanning")?

A: No. However, if the "Integration with Windows Explorer" option is checked during installation, any file can be scanned from within Windows Explorer simply by right-clicking on it and selecting "Scan For Viruses With ClamWin"

This feature is being worked on, and should be available in a later version.

Q: How can I check it works?

A: Download the EICAR anti-virus test file from http://www.eicar.org/anti_virus_test_file.htm This is not a virus, but a standard test file. Any anti-virus program should recognise it and treat it as a virus. ClamWin will report it as "Eicar-Test-Signature". The file is a DOS program, and if run it will print the message "EICAR-STANDARD-ANTIVIRUS-TEST-FILE!"

Q: I installed ClamWin with Outlook integration. Why doesn't it appear in Outlook?

A: ClamWin will not appear as an add-in. However, if it is properly installed, an extra menu option ("About ClamWin") will have been added to Outlook's Help menu.

Q: Does it check incoming and outgoing e-mails?

A: If ClamWin is installed with Outlook integration, it will check all incoming and outgoing e-mails for viruses. E-mails are checked automatically when they are opened. If an incoming e-mail has a virus attachment, the attachment will be replaced with a report file.

Q: How can I report a virus that ClamWin doesn't recognise?

A: ClamWin uses the same database as ClamAV (www.clamav.net). Viruses that are not in the database can be reported using the on-line form at www.clamav.net/sendvirus.html. Please make sure that you have updated your database to the latest version before using this form. False positives can also be reported here.

Q: I just installed ClamWin and it found some viruses. Now what?

A: You can either set ClamWin to quarantine the files or alternatively locate the infected files by examining the reports and manually delete them. If the Outlook integration option was chosen during installation, ClamWin will automatically remove infected attachments from emails in Outlook.

Q: Do I have to configure ClamWin individually for each user?

A: ClamWin stores each user's configuration separately, so they can each have different settings. However, you can alter what ClamWin uses as the default configuration. See "Modifying ClamWin's Default Configuration" section in the Advanced section.


Troubleshooting

Problem: When trying to send a test e-mail alert, a message similar to the following appears:

Could not send the email. Please ensure you are connected to the internet. Error: SMTP instance has no attribute 'sock'

or

Could not send the email. Please ensure you are connected to the internet. Error: SMTP AUTH extension not supported by server

Solution: The SMTP server settings are wrong. Note that many ISP's do not require a user name & password for the SMTP server. Try leaving these settings blank.

E-mail Clients that Store Messages in a Single File

Some e-mail clients (e.g. The Bat!) store all messages in a single file. Others store each e-mail as a separate file. If ClamWin finds a virus attached to an e-mail, it will consider the entire file (i.e. all the e-mails in that file) to be infected. Therefore, the entire file will be removed or moved to quarantine. You may wish to set the Filters (see the instructions on configuring ClamWin) so that these files are not scanned.

Users of The Bat! may be interested to know that Marco Pontello has written a plug-in that allows The Bat! to use ClamWin to scan attachments. More details are available at Marco's web site.

Conflicts with ActivePython

Having python installed should not be a problem if you have python 2.3 and pywin32-201 (http://sourceforge.net/projects/pywin32/) installed. It seems that versions of ActiveState python that come with win32all-163 (now pywin32) create a dll conflict. So if you have ActivePython 2.3, just install pywin32 and it should be fine.

Outlook does not Restore When Minimised

When ClamWin is installed, Outlook 2000 may not restore properly from being minimised. Installing Office 2000 Service Release 1a (SR1a) will fix this problem, and is generally recommended, as it includes a number of bug fixes and security fixes. Full details and downloads are available at http://www.microsoft.com/downloads/details.aspx?FamilyID=AF6C8D03-7633-45B4-AB96-795EE656F2A2&displaylang=EN or http://tinyurl.com/xsyx

ClamWin Stops Working after Upgrade

After downloading and installing a newer version, ClamWin stops working. This problem is most often caused by an older version of cygwin being present on the PC. To resolve the problem, use Windows' search function to find all files named cygwin1.dll and replace them with the copy of cygwin1.dll from the ClamWin program directory (c:\program files\clamwin\bin by default)

Alternatively, upgrade to the latest distribution of cygwin.


ClamWin CD/USB - HowTo

Appendix A

How to Run ClamWin from CD or USB

Introduction

This tutorial explains how to create a CD or USB key with ClamWin, to allow a Windows PC to be scanned for viruses without having to install ClamWin. Note that the CD/USB key is not bootable, and so can only be used on a working Windows PC. This tutorial was written to satisfy a feature request logged with the ClamWin project (RFE 945882)

The PC that is used to create the CD/USB will need to have ClamWin installed, and be able to copy files/folders to a CD or USB key.

Preparation

Start by installing the latest version of ClamWin, and download the latest virus definitions. See the ClamWin manual for full details on how to do this. Note that, if you are going to create a CD, you will not be able to update the virus definitions without creating a new CD, since a CD is read-only.

Copy Folders

Create a working folder in a convenient location to hold the files that are to be copied onto CD/USB, eg C:\ClamWin-CD
In the working folder, create a folder named ClamWin.
Copy the ClamWin program folder into C:\ClamWin-CD\ClamWin. By default, the ClamWin program folder is installed to C:\Program Files\ClamWin
Copy the ClamWin database folder into C:\ClamWin-CD\ClamWin. In Windows 2000/XP, the ClamWin database folder defaults to C:\Documents and Settings\USERNAME\.clamwin\db, where USERNAME is your login name (if it was installed for a single user) or C:\Documents and Settings\All Users\.clamwin\db (if it was installed for all users).

You should now have the following folders:

C:\ClamWin-CD
C:\ClamWin-CD\ClamWin\bin
C:\ClamWin-CD\ClamWin\db
C:\ClamWin-CD\ClamWin\lib

Edit Config & Create Auto-Run Files

Open the file C:\ClamWin-CD\ClamWin\bin\ClamWin.conf in a text editor, such as Windows Notepad. Edit it so that it looks like the example below:

[ClamAV]
clamscan=clamscan.exe
freshclam=freshclam.exe
database=..\db
quarantinedir=
logfile=
[Updates]
dbupdatelogfile=
time=

In the C:\ClamWin-CD folder, create two text files, named autorun.inf & RUN_ME.vbs. Ensure that they do not have a .txt extension.
Edit autorun.inf and edit it so that it only has the three lines below:

[autorun]
OPEN=RUN_ME.vbs
icon=ClamWin\bin\img\TrayIcon.ico

Edit RUN_ME.vbs and edit it so that it only has the three lines below:

set oShell = WScript.CreateObject ("WScript.Shell")
oShell.Run "ClamWin\bin\ClamWin.exe"
set oShell = Nothing

Copy Files to CD/USB

Now you just need to copy the contents of C:\ClamWin-CD to a CD or USB key. Do not copy the C:\ClamWin-CD folder itself, only the contents. Exactly how this is done will depend on whether a CD or USB key is to be used, and what software is to be used.

Using the CD/USB

To use it, insert the CD/USB into the PC to be scanned. If Windows is set up correctly, ClamWin will automatically run. If it does not, double-click on the RUN_ME.vbs file. If this does not work, then the PC either does not have the Windows Script Host installed, or it is disabled. In this case, you can manually run ClamWin by double-clicking on the ClamWin.exe file in the ClamWin\bin folder.

ClamWin should operate normally, but if run from CD, it will have the following restrictions:

  • Files will not be quarantined

  • Internet updates will not work

  • Preferences cannot be changed


GNU GENERAL PUBLIC LICENSE

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.

59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software - to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.

Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.

Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.

The precise terms and conditions for copying, distribution and modification follow.

GNU General Public License Terms and Conditions for Copying, Distribution and Modification

0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.

You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.

c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:

a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.

6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.

7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

No Warranty

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.

<one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this when it starts in an interactive mode:

Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items - whatever suits your program.

You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:

Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.

<signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice

This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.